#ifndef LP_NORM_V2_CUSTOM_TILING_H
#define LP_NORM_V2_CUSTOM_TILING_H
#include "register/tilingdata_base.h"

namespace optiling {
BEGIN_TILING_DATA_DEF(LpNormV2CustomTilingData)
    // 定义小核（Small Core）处理的数据量（单位：元素数）
    TILING_DATA_FIELD_DEF(uint32_t, smallCoreDataNum);

    // 定义大核（Big Core）处理的数据量（单位：元素数）
    TILING_DATA_FIELD_DEF(uint32_t, bigCoreDataNum);

    // 定义大核最终处理的完整分块（Tile）数量
    TILING_DATA_FIELD_DEF(uint32_t, finalBigTileNum);

    // 定义小核最终处理的完整分块（Tile）数量
    TILING_DATA_FIELD_DEF(uint32_t, finalSmallTileNum);

    // 定义每个分块（Tile）包含的数据量（单位：元素数）
    TILING_DATA_FIELD_DEF(uint32_t, tileDataNum);

    // 定义小核处理的尾块数据量（总数据无法整除分块大小时的剩余部分）
    TILING_DATA_FIELD_DEF(uint32_t, smallTailDataNum);

    // 定义大核处理的尾块数据量（总数据无法整除分块大小时的剩余部分）
    TILING_DATA_FIELD_DEF(uint32_t, bigTailDataNum);
    
    // 定义尾块的总数量
    TILING_DATA_FIELD_DEF(uint32_t, tailBlockNum);

    TILING_DATA_FIELD_DEF(uint32_t, dataTypeId);

    TILING_DATA_FIELD_DEF(float, epsilon);  
    
    TILING_DATA_FIELD_DEF(float, p);

    // 0：整体矩阵 1：列向量 2：行向量
    TILING_DATA_FIELD_DEF(uint32_t, axis);
    // 矩阵列数
    TILING_DATA_FIELD_DEF(uint32_t, cols);
    // 矩阵行数
    TILING_DATA_FIELD_DEF(uint32_t, rows);
END_TILING_DATA_DEF;

REGISTER_TILING_DATA_CLASS(LpNormV2Custom, LpNormV2CustomTilingData)
}
#endif  // LP_NORM_V2_CUSTOM_TILING_H